home *** CD-ROM | disk | FTP | other *** search
/ Softdisk G-S 87 / SGDS 87.2mg / SDGS.87 / SDA87 / A / WIA (.txt) < prev   
Encoding:
Applesoft BASIC Source Code  |  1988-11-19  |  15.0 KB  |  499 lines  |  [FC] Applesoft BASIC Program (0x0801)

  1. 10  TEXT : PRINT  CHR$(21): HOME : HIMEM: 36608
  2. 11  PRINT  CHR$(30) CHR$(127)
  3. 12  GOSUB 15: GOTO 20
  4. 15  CALL  PEEK(121) + PEEK(122) *256 +28: REM <CTRL-0x18> HGR2 <CTRL-0x0d> - ATN HGR2 <CTRL-0x06> -<UNKNOWN TOKEN> GOSUB <CTRL-0x02>) SINL<UNKNOWN TOKEN><UNKNOWN TOKEN> IF  STOP <UNKNOWN TOKEN> - MID$  = 2 IF <CTRL-0x1e><UNKNOWN TOKEN> - IF  = + IF  TAB( <UNKNOWN TOKEN> - MID$  = $ IF  NEW <UNKNOWN TOKEN> - MID$  = <CTRL-0x1d> ONERR z DEL Q ONERR y DEL P<CTRL-0x18> SPEED= <CTRL-0x1f>ey DEL P HGR2 <CTRL-0x02> ASCQ ONERR P PLOT 0 GET  ONERR Q PLOT 1 GET `
  5. 16  RETURN 
  6. 20  PRINT  CHR$(4);"BLOAD FILL.OBJ0"
  7. 23 FI = 1
  8. 30  PRINT  CHR$(4);"BRUN QND.STR.9300"
  9. 40  HOME : GOSUB 3700
  10. 45 FI = 1
  11. 50  DIM AA%(1536): DIM AA$(1536):M1 = 2:M2 = 2
  12. 60  DIM MS$(14): DIM MS(14): DIM PTR%(128)
  13. 70  PRINT 
  14. 75  IF FI = 1  THEN  VTAB 22: HTAB 9: PRINT "**********************";: VTAB 23: HTAB 9: PRINT "*Loading data file...*";: VTAB 24: HTAB 9: PRINT "**********************";
  15. 76  VTAB 2: HTAB 2
  16. 80 CL% = 0:CI% = 0:D$ =  CHR$(4)
  17. 90 LB$ =  CHR$(219):RB$ =  CHR$(221)
  18. 100 HI = 1
  19. 110  CALL 768
  20. 120 AA$(0) = "ROOT":KN = 2:HI = 2:A$ = D$
  21. 125  IF FI = 1  THEN  GOSUB 2170:FI = 0
  22. 130  REM  MAIN LOOP
  23. 140  ONERR  GOTO 2710
  24. 225  GOSUB 50000
  25. 230  PRINT " You are at:"AA$(CI%);
  26. 240  VTAB 21: HTAB 1: PRINT "  A)dd  D)elete M)ove I)n O)ut H)elp    F)ind C)lear  E)dit P)rint   Q)uit";
  27. 250  GOSUB 4000
  28. 260  POKE  -16368,0: WAIT  -16384,128:K$ =  CHR$( PEEK( -16384) -128)
  29. 261  POKE  -16368,0
  30. 265  IF K$ > = "a"  AND K$ =  <"z"  THEN K$ =  CHR$( ASC(K$) -32)
  31. 270  IF K$ = "A"  THEN  GOSUB 1200: GOTO 225
  32. 280  IF K$ = "D"  THEN  GOSUB 1340: GOTO 225
  33. 290  IF K$ = "M"  THEN  GOSUB 2800: GOTO 225
  34. 300  IF K$ = "I"  THEN  GOSUB 760: GOTO 225
  35. 310  IF K$ = "O"  THEN  GOSUB 1090: GOTO 225
  36. 330  IF K$ = "F"  THEN  GOSUB 2430: GOTO 225
  37. 340  IF K$ = "E"  THEN  GOSUB 3380: GOTO 225
  38. 350  IF K$ = "C"  THEN  GOSUB 1980: GOTO 225
  39. 355  IF K$ = "P"  THEN  GOSUB 9000: GOTO 225
  40. 360  IF K$ = "Q"  THEN  GOSUB 3370: GOTO 225
  41. 370  IF K$ = "H"  THEN  GOSUB 5000: GOTO 225
  42. 380 P = 9:D = 3: GOSUB 62000: GOTO 260
  43. 750  REM  MOVEDOWN ONE LEVEL
  44. 760  HOME :A$ = "GO IN": GOSUB 10000
  45. 770 :
  46. 790 Y = 0
  47. 800  FOR X = 1 TO HI
  48. 810  IF AA%(X) = CI%  THEN Y = Y +1:PT%(Y) = X
  49. 820  NEXT 
  50. 830  IF Y = 0  THEN  GOSUB 10000: PRINT "There are no items stored below": PRINT "this level.": VTAB 22: HTAB 12: PRINT "Press a key.";: GOSUB 20000: RETURN 
  51. 840 X = 1:X1 = 0
  52. 850  GOSUB 7000
  53. 860 CH% = TP +CS: IF   NOT CH%  THEN  RETURN 
  54. 870 CI% = PT%(CH%):CL% = CL% +1:X = HI
  55. 880  RETURN 
  56. 1080  REM  MOVE UP ONE LEVEL
  57. 1090 A$ = "GO OUT": GOSUB 10000
  58. 1095 CI% = AA%(CI%)
  59. 1100 CL% = CL% -1: IF CL% <0  THEN CL% = 0
  60. 1110 A$ = "GO OUT": GOSUB 10000
  61. 1120  PRINT : PRINT "Current item:";AA$(CI%)
  62. 1130  VTAB 22: HTAB 12: PRINT "Press a key.";
  63. 1140  GOSUB 20000: RETURN 
  64. 1150  REM  ADD AN ITEM
  65. 1160  HOME : PRINT  CHR$(4)"FRE":FR = ( PEEK(112) - PEEK(110)) *256
  66. 1170  IF FR <512  THEN P = 9:D = 3: GOSUB 62000: VTAB 6: HTAB 1: PRINT "You're running out of memory.": PRINT "It's time to split this file.": VTAB 22: HTAB 12: PRINT "Press a key.";: GOSUB 20000: RETURN 
  67. 1180 B$ = "":C$ = "": PRINT  CHR$(4)"FRE"
  68. 1190  GOSUB 1810
  69. 1200 A$ = "ADD AN ITEM": GOSUB 10000
  70. 1203 NI = 0: FOR X = 1 TO HI: IF AA%(X) = CI%  THEN NI = NI +1
  71. 1204  NEXT : IF NI > = 128  THEN  VTAB 12: HTAB 1: PRINT " There are 128 items here.": PRINT " You cannot add any more.": VTAB 22: HTAB 12: PRINT "Press a key.";: GOSUB 20000: RETURN 
  72. 1205  VTAB 21: HTAB 1: PRINT "Enter name of item to add here:";
  73. 1207  VTAB 23: HTAB 10: PRINT "(ESC exits to menu)";
  74. 1210  VTAB 22: HTAB 1: GOSUB 61000:A$ = IN$
  75. 1220  IF  LEN(A$) = 0  THEN  RETURN 
  76. 1230 Y = 0
  77. 1240  FOR X = 1 TO 1536
  78. 1250  IF AA%(X) =  -1  THEN  GOSUB 1290
  79. 1260  NEXT 
  80. 1265 :
  81. 1270  IF Y = 0  THEN A$ = "ADD AN ITEM": GOSUB 10000: PRINT "File is full.": PRINT "No more items can be added."
  82. 1280  RETURN 
  83. 1290 AA$(X) = A$:AA%(X) = CI%
  84. 1300  IF X >HI  THEN HI = X
  85. 1310 X = 1536:Y =  -1
  86. 1320  RETURN 
  87. 1330  REM  DELETE AN ITEM
  88. 1340 A$ = "DELETE AN ITEM": GOSUB 10000
  89. 1370 Y = 0
  90. 1380  FOR X = 1 TO HI
  91. 1390  IF AA%(X) = CI%  THEN Y = Y +1:PT%(Y) = X
  92. 1400  NEXT 
  93. 1410  IF Y = 0  THEN  GOSUB 10000: PRINT "There are no items to delete": PRINT "below this level.": VTAB 22: HTAB 12: PRINT "Press a key";: GOSUB 20000: RETURN 
  94. 1420 X = 0:X1 = 1
  95. 1430  GOSUB 7000
  96. 1440 CH% = TP +CS: IF   NOT CH%  THEN  RETURN 
  97. 1450 J = PT%(CH%)
  98. 1510 X1 = 0
  99. 1535  GOSUB 10000
  100. 1540  VTAB 21: HTAB 1: PRINT "Do you want to delete the item";: VTAB 22: HTAB 1: PRINT AA$(J)"(y/n)?";
  101. 1560  GOSUB 20000: IF K$ = "Y"  THEN 1690
  102. 1565  IF K$ < >"N"  THEN P = 240:D = 20: GOSUB 62001: GOTO 1560
  103. 1570 A$ = "FF": RETURN 
  104. 1630  PRINT "Any key to continue"
  105. 1640  GOSUB 20000
  106. 1650 X1 = 0
  107. 1660  RETURN 
  108. 1690  REM  J=ITEM # TO DELETE
  109. 1695  GOSUB 10000
  110. 1700 DL = J:X1 = 0
  111. 1710 DL = J
  112. 1720 X = 1
  113. 1730  IF AA%(X) = DL  THEN DL = X: GOTO 1720
  114. 1740 X = X +1: IF X >HI  THEN  GOTO 1760
  115. 1750  GOTO 1730
  116. 1760  REM 
  117. 1770  PRINT "Deleting ";AA$(DL)
  118. 1780 AA%(DL) =  -1:AA$(DL) = ""
  119. 1790  IF DL = J  THEN  VTAB 22: HTAB 12: PRINT "Press any key";: GOSUB 20000:A$ = "FF": RETURN 
  120. 1800  GOTO 1710
  121. 1810  HOME 
  122. 1820  PRINT " Path to current item is:"
  123. 1825  POKE 34,6: POKE 35,19: HOME 
  124. 1830  IF CL% = 0  THEN  GOTO 1920
  125. 1840  FOR X = CL% TO 1  STEP  -1
  126. 1850 J = CI%
  127. 1860  FOR Y = X TO 1  STEP  -1
  128. 1870 J = AA%(J)
  129. 1880  NEXT 
  130. 1890  REM 
  131. 1900  PRINT " "AA$(J)
  132. 1910  NEXT 
  133. 1920  REM 
  134. 1930  PRINT " "AA$(CI%)
  135. 1960  RETURN 
  136. 1970  REM  CREATE A NEW FILE
  137. 1980 A$ = "CLEAR ALL DATA": GOSUB 10000
  138. 1985  FOR I = 1 TO 3:P = 96:D = 8: GOSUB 62000: NEXT 
  139. 1990  PRINT "WARNING! You have chosen a selection": PRINT "which will destroy the current": PRINT "file in memory."
  140. 2000  VTAB 21: HTAB 1: PRINT "Press Y to do it.";: VTAB 22: HTAB 1: PRINT "Press N not to.";
  141. 2010  GOSUB 20000
  142. 2030  IF K$ = "N"  THEN  RETURN 
  143. 2040  IF K$ = "Y"  THEN 2060
  144. 2050 P = 9:D = 3: GOSUB 62000: GOTO 2010
  145. 2060 A$ = "CLEAR ALL DATA": GOSUB 10000
  146. 2080  VTAB 12: HTAB 4: PRINT "Your new data file is ready.": VTAB 22: HTAB 12: PRINT "Press a key.";: GOSUB 20000
  147. 2100  CALL 54915: CLEAR :FI = 0: GOTO 50
  148. 2170 A$ = "WIA.DATA"
  149. 2180  PRINT D$;"UNLOCK";A$
  150. 2190  PRINT D$;"OPEN ";A$
  151. 2200  PRINT D$;"READ ";A$
  152. 2210  INPUT HI
  153. 2220  FOR X = 0 TO HI
  154. 2230  GOSUB 60000:AA$(X) = IN$
  155. 2240  INPUT AA%(X)
  156. 2250  NEXT X
  157. 2260  PRINT D$;"CLOSE ";A$
  158. 2270 A$ = "D"
  159. 2280  VTAB 23: HTAB 10: PRINT "Loaded. Press a key.";: POKE  -16368,0: WAIT  -16384,128: POKE  -16368,0
  160. 2290  RETURN 
  161. 2300  ONERR  GOTO 2710: REM  SAVE FILE TO DISK
  162. 2310 A$ = "WIA.DATA"
  163. 2320  PRINT D$;"OPEN ";A$
  164. 2330  PRINT D$;"WRITE ";A$
  165. 2340  PRINT HI
  166. 2350  FOR X = 0 TO HI
  167. 2360  PRINT AA$(X)
  168. 2370  PRINT AA%(X)
  169. 2380  NEXT X
  170. 2390  PRINT D$;"CLOSE ";A$
  171. 2400 A$ = "D"
  172. 2420  RETURN 
  173. 2430 A$ = "FIND AN ITEM": GOSUB 10000
  174. 2435  VTAB 21: HTAB 1: PRINT "Enter item to find:";: VTAB 23: HTAB 1: PRINT "(You can enter a word to search for.)";: VTAB 22: HTAB 1: GOSUB 61000:QE$ = IN$: IF  LEN(QE$) = 0  THEN  RETURN 
  175. 2440 X1 = 1
  176. 2450 X3 = 0
  177. 2460  FOR XX = 1 TO HI
  178. 2470  IF ( LEN(QE$) = 0)  OR ( LEN(AA$(XX)) = 0)  THEN  GOTO 2510
  179. 2480 LO = 0
  180. 2490  &  GET QE$ ON AA$(XX) AT 0,LO: ROT= 0
  181. 2500  IF LO >0  THEN PT%(X1) = XX:X1 = X1 +1:X3 = X3 +1
  182. 2510  NEXT XX
  183. 2520  IF X3 = 0  THEN  GOSUB 10000: PRINT "There are no items with that": PRINT "keyword.": VTAB 21: HTAB 12: PRINT "Press a key.";: GOSUB 20000: RETURN 
  184. 2530 X2 = 0:Y = X1 -1: GOSUB 7000
  185. 2540 CM% = TP +CS: IF   NOT CM%  THEN  RETURN 
  186. 2550 CM% = PT%(CM%)
  187. 2560  GOSUB 10000: PRINT " Here is the path to the item ": PRINT " "AA$(CM%)":"
  188. 2570 TI% = CM%: GOSUB 8000
  189. 2580  GOSUB 10020
  190. 2590  VTAB 21: HTAB 1: PRINT "Do you want to go there (y/n)?";
  191. 2600  GOSUB 20000: IF K$ < >"Y"  AND K$ < >"N"  THEN P = 9:D = 3: GOSUB 62000: GOTO 2600
  192. 2610  IF K$ = "N"  THEN 2530
  193. 2620 CI% = CM%
  194. 2640  REM  FIND CURRENT LEVEL
  195. 2650 CL% = 0
  196. 2660 JJ = CI%
  197. 2670  IF AA%(JJ) < >0  THEN CL% = CL% +1:JJ = AA%(JJ): GOTO 2670
  198. 2680 CL% = CL% +1
  199. 2690  GOSUB 1810
  200. 2700  RETURN 
  201. 2705  IF ER = 2  THEN  PRINT "Range error.": PRINT "Some number was too big or": PRINT "too small.": GOTO 2780
  202. 2710  PRINT  CHR$(4)"PR#0":A$ = "ERROR": GOSUB 10000
  203. 2711 ER =  PEEK(222): GOSUB 15
  204. 2712  PRINT "Error in line " PEEK(218) + PEEK(219) *256":"
  205. 2715  IF ER = 2  THEN  PRINT "Range error.": PRINT "Some number was too big or": PRINT "too small.": GOTO 2780
  206. 2720  IF ER = 3  THEN  PRINT "No device connected": PRINT "There was nothing in the": PRINT "specified slot.": GOTO 2780
  207. 2725  IF ER = 4  THEN  PRINT "Write protected.": PRINT "Please remove the write-protect tab.": GOTO 2780
  208. 2730  IF ER = 5  THEN  PRINT "End of data.": PRINT "Data file may be corrupted.": GOTO 2780
  209. 2735  IF ER = 6  THEN  PRINT "Path not found.": PRINT "The disk you were using": PRINT "is no longer there.": GOTO 2780
  210. 2740  IF ER = 8  THEN  PRINT "I/O Error.": PRINT "There was trouble reading the disk.": GOTO 2780
  211. 2745  IF ER = 9  THEN  PRINT "Disk full.": PRINT "There is no more room on the disk.": GOTO 2780
  212. 2750  IF ER = 10  THEN  PRINT "File locked.": PRINT "You must not lock the data file.": GOTO 2780
  213. 2755  IF ER = 11  THEN  PRINT "Invalid option.": PRINT "Strange option was used in": PRINT "a ProDOS command.": GOTO 2780
  214. 2760  IF ER = 12  THEN  PRINT "No buffers available.": PRINT "Try booting ProDOS again.": GOTO 2780
  215. 2765  IF ER = 16  THEN  PRINT "Syntax error.": GOTO 2780
  216. 2770  IF ER = 18  THEN  PRINT "File not open.": PRINT "Tried to access data file": PRINT "before it was opened.": GOTO 2780
  217. 2771  IF ER = 21  THEN  PRINT "File(s) still open.": GOTO 2780
  218. 2772  IF ER = 22  THEN  PRINT "RETURN without GOSUB.": PRINT "Program went nuts.": GOTO 2780
  219. 2773  IF ER = 53  THEN  PRINT "Illegal quantity.": PRINT "Some number was way off.": GOTO 2780
  220. 2774  IF ER = 77  THEN  PRINT "Out of memory.": PRINT "Way too much data in the file.": GOTO 2780
  221. 2775  IF ER = 107  THEN  PRINT "Bad subscript error.": PRINT "Over 1536 items in file, or": PRINT "over 128 items at one place.": GOTO 2780
  222. 2778  IF ER = 255  THEN  PRINT "You pressed control-C.": GOTO 2780
  223. 2779  PRINT "Error code:"ER: PRINT "I don't recognize this error."
  224. 2780  VTAB 21: HTAB 1: PRINT "Press [RETURN] to continue.";: GOSUB 20000: POKE 216,0: CALL 54915
  225. 2790  GOTO 140
  226. 2800 A$ = "MOVE AN IT<CTRL-0x05>EM": GOSUB 10000
  227. 2803 SI% = CI%:SL% = CL%
  228. 2805  VTAB 21: HTAB 1: PRINT "Enter what to move:";: VTAB 23: HTAB 1: PRINT "(You can enter a word to search for.)";: VTAB 22: HTAB 1: GOSUB 61000:QE$ = IN$: IF  LEN(QE$) = 0  THEN  RETURN 
  229. 2810 X1 = 1
  230. 2820 X3 = 0
  231. 2830  FOR XX = 1 TO HI
  232. 2840  IF ( LEN(QE$) = 0)  OR ( LEN(AA$(XX)) = 0)  THEN  GOTO 2880
  233. 2850 LO = 0
  234. 2860  &  GET QE$ ON AA$(XX) AT 0,LO: ROT= 0
  235. 2870  IF LO >0  THEN PT%(X1) = XX:X1 = X1 +1:X3 = X3 +1
  236. 2880  NEXT XX
  237. 2890  IF X3 = 0  THEN A$ = "MOVE AN ITEM": GOSUB 10000: PRINT "There are no items with that keyword.": VTAB 22: HTAB 12: PRINT "Press a key.";: GOSUB 20000: RETURN 
  238. 2900 X2 = 0:Y = X1 -1: GOSUB 7000
  239. 2910 CM% = TP +CS: IF   NOT CM%  THEN  RETURN 
  240. 2915 CM% = PT%(CM%)
  241. 2920  GOSUB 10000: PRINT " Here is the path to the item": PRINT " "AA$(CM%)":"
  242. 2930 TI% = CM%: GOSUB 8000
  243. 2940  GOSUB 10020
  244. 2950  VTAB 21: HTAB 1: PRINT "Do you want to move this (y/n)?";
  245. 2960  GOSUB 20000: IF K$ < >"Y"  AND K$ < >"N"  THEN P = 9:D = 3: GOSUB 62000: GOTO 2960
  246. 2970  IF K$ = "N"  THEN 2800
  247. 3015 A$ = "MOVE AN ITEM": GOSUB 10000
  248. 3020  VTAB 21: HTAB 1: PRINT "Enter item to move to:";: VTAB 23: HTAB 1: PRINT "(You can enter a word to search for.)";: VTAB 22: HTAB 1: GOSUB 61000:QE$ = IN$: IF  LEN(QE$) = 0  THEN  RETURN 
  249. 3030 X1 = 1
  250. 3040 X3 = 0
  251. 3050  FOR XX = 0 TO HI
  252. 3060  IF ( LEN(QE$) = 0)  OR ( LEN(AA$(XX)) = 0)  THEN  GOTO 3100
  253. 3070 LO = 0
  254. 3080  &  GET QE$ ON AA$(XX) AT 0,LO: ROT= 0
  255. 3090  IF LO >0  THEN PT%(X1) = XX:X1 = X1 +1:X3 = X3 +1
  256. 3100  NEXT XX
  257. 3110  IF X3 = 0  THEN A$ = "MOVE AN ITEM": GOSUB 10000: PRINT "There are no items with that": PRINT "keyword.": VTAB 22: HTAB 12: PRINT "Press a key.";: GOSUB 20000: RETURN 
  258. 3120 X2 = 0:Y = X1 -1
  259. 3130  GOSUB 7000: IF CS +TP = 0  THEN  RETURN 
  260. 3140 CD% = CS +TP: IF   NOT CD%  THEN  RETURN 
  261. 3150 :
  262. 3160  GOSUB 10000: PRINT " Here is the path to the item": PRINT " "AA$(CD%)":"
  263. 3170 TI% = CD%: GOSUB 8000
  264. 3180  GOSUB 10020
  265. 3185  VTAB 21: HTAB 1: PRINT "Do you want to move item here(y/n)?";
  266. 3190  GOSUB 20000: IF K$ < >"Y"  AND K$ < >"N"  THEN P = 9:D = 3: GOSUB 62000: GOTO 3190
  267. 3200  IF K$ = "N"  THEN 3015
  268. 3210  IF CD% = CM%  THEN  PRINT :P = 9:D = 3: GOSUB 62000: GOSUB 10000: PRINT "This move is not allowed.": VTAB 22: HTAB 12: PRINT "Press a key.";: GOSUB 20000:CI% = SI%:CL% = SL%: RETURN 
  269. 3220  IF AA%(CD%) = CM%  THEN  PRINT :P = 9:D = 3: GOSUB 62000: GOSUB 10000: PRINT "This move is not allowed.": VTAB 22: HTAB 12: PRINT "Press a key.";: GOSUB 20000: RETURN 
  270. 3230 AA%(CM%) = CD%
  271. 3240 J% = CD%
  272. 3250  IF AA%(J%) = CM%  THEN  PRINT :P = 9:D = 3: GOSUB 62000: GOSUB 10000: PRINT "This move is not allowed.": VTAB 22: HTAB 12: PRINT "Press a key.";: GOSUB 20000: RETURN 
  273. 3255 CI% = CD%
  274. 3260  IF AA%(J%) = 0  THEN  GOTO 3290
  275. 3270 J% = AA%(J%)
  276. 3280  GOTO 3250
  277. 3290 CI% = CM%
  278. 3300  REM  FIND CURRENT LEVEL
  279. 3310 CL% = 0
  280. 3320 JJ = CI%
  281. 3330  IF AA%(JJ) < >0  THEN CL% = CL% +1:JJ = AA%(JJ): GOTO 3330
  282. 3340 CL% = CL% +1
  283. 3350  GOSUB 1810
  284. 3355 :
  285. 3360  RETURN 
  286. 3370 A$ = "QUIT": GOSUB 10000: VTAB 12: HTAB 4: PRINT "Save data before quitting?": VTAB 21: HTAB 1: PRINT " Press Y to save data.";: VTAB 22: HTAB 1: PRINT " Press N not to.";: VTAB 13: HTAB 1
  287. 3371  GOSUB 20000: ON K$ = "N" GOTO 3372: ON K$ = "Y" GOTO 3378:P = 9:D = 3: GOSUB 62000: GOTO 3371
  288. 3372  VTAB 12: HTAB 4: PRINT  SPC( 30)
  289. 3373  VTAB 21: HTAB 1: PRINT " Press RETURN to quit.";: VTAB 22: HTAB 1: PRINT " Press ESC to go back.";
  290. 3374  POKE  -16368,0: WAIT  -16384,128:K$ =  CHR$( PEEK( -16384) -128): POKE  -16368,0
  291. 3375  IF K$ < > CHR$(13)  AND K$ < > CHR$(27)  THEN 3374
  292. 3376  IF K$ =  CHR$(27)  THEN 225
  293. 3377  TEXT : HOME : PRINT  CHR$(4)"BYE": END 
  294. 3378  GOSUB 2300: VTAB 12: HTAB 4: PRINT "Data saved." SPC( 20): GOTO 3373
  295. 3380 A$ = "EDIT AN ITEM": GOSUB 10000
  296. 3385  VTAB 21: HTAB 1: PRINT "Enter item to edit:";: VTAB 23: HTAB 1: PRINT "(You can enter a word to search for.)";: VTAB 22: HTAB 1: GOSUB 61000:QE$ = IN$: IF  LEN(QE$) = 0  THEN  RETURN 
  297. 3390 X1 = 1
  298. 3400 X3 = 0
  299. 3410  FOR XX = 1 TO HI
  300. 3420  IF ( LEN(QE$) = 0)  OR ( LEN(AA$(XX)) = 0)  THEN  GOTO 3460
  301. 3430 LO = 0
  302. 3440  &  GET QE$ ON AA$(XX) AT 0,LO: ROT= 0
  303. 3450  IF LO >0  THEN PT%(X1) = XX:X1 = X1 +1:X3 = X3 +1
  304. 3460  NEXT XX
  305. 3470  IF X3 = 0  THEN  GOSUB 10000: PRINT "There are no items with that": PRINT "keyword.": VTAB 22: HTAB 12: PRINT "Press a key.";: GOSUB 20000: RETURN 
  306. 3480 X2 = 0:Y = X1 -1: GOSUB 7000
  307. 3490 CM% = CS +TP: IF   NOT CM%  THEN  RETURN 
  308. 3500 CM% = PT%(CM%)
  309. 3510  GOSUB 10000: PRINT " Here is the path to the item": PRINT " "AA$(CM%)":"
  310. 3520 TI% = CM%: GOSUB 8000
  311. 3530  GOSUB 10020
  312. 3540  VTAB 21: HTAB 1: PRINT "Do you want to edit this (y/n)?";
  313. 3550  GOSUB 20000: IF K$ < >"Y"  AND K$ < >"N"  THEN P = 9:D = 3: GOSUB 62000: GOTO 3550
  314. 3560  IF K$ = "N"  THEN 3380
  315. 3590  GOSUB 10000: PRINT "Current item is:": PRINT AA$(CM%)
  316. 3600  VTAB 21: HTAB 1: PRINT "Enter correct item name:";: VTAB 22: HTAB 1:IN$ = AA$(CM%): GOSUB 61000:A$ = IN$: IF  LEN(A$) = 0  THEN  RETURN 
  317. 3610 AA$(CM%) = A$:CI% = CM%
  318. 3620  REM  FIND CURRENT LEVEL
  319. 3630 CL% = 0
  320. 3640 JJ = CI%
  321. 3650  IF AA%(JJ) < >0  THEN CL% = CL% +1:JJ = AA%(JJ): GOTO 3650
  322. 3660 CL% = CL% +1
  323. 3670  GOSUB 1810
  324. 3680 :
  325. 3690  RETURN 
  326. 3700  TEXT : HOME : NORMAL : COLOR= 10: VLIN 0,47 AT 0: VLIN 0,47 AT 39: HLIN 0,39 AT 0: HLIN 0,39 AT 46: POKE 34,1: POKE 35,23: POKE 32,1: POKE 33,38
  327. 3710  FOR C = 1 TO 3: VTAB 5 +C: HTAB 8: INVERSE : PRINT "                        ": NEXT C: VTAB 7: HTAB 10: PRINT "    WHERZ-IT-AT"
  328. 3720  VTAB 11: NORMAL : PRINT "    Database program by K. W. Bowen"
  329. 3730  VTAB 4: HTAB 12: NORMAL : PRINT "Softdisk Presents": VTAB 16: HTAB 10: PRINT "Copyright (c) 1989"
  330. 3740  VTAB 18: PRINT "     Published on Softdisk #87.": PRINT "    Subscriptions 1-800-831-2694": PRINT "   Changing this notice is illegal."
  331. 3760  RETURN 
  332. 4000  POKE 34,5: POKE 35,19
  333. 4010  GOSUB 1810: RETURN 
  334. 5000  HOME 
  335. 5010 A$ = "HELP SCREEN": GOSUB 10000
  336. 5020  VTAB 6: HTAB 1: HOME 
  337. 5030  PRINT "KEY  WHAT IT DOES"
  338. 5035  PRINT "---  --------------------------------"
  339. 5040  PRINT " A   Add item to items here"
  340. 5041  PRINT " C   Clear all data"
  341. 5050  PRINT " D   Delete one of the items here"
  342. 5051  PRINT " E   Edit an item's name"
  343. 5052  PRINT " F   Find an item given a keyword"
  344. 5053  PRINT " H   Show this help screen"
  345. 5054  PRINT " I   Go in an item that is here"
  346. 5060  PRINT " M   Move any item anywhere"
  347. 5061  PRINT " O   Go outside the current item"
  348. 5062  PRINT " P   Print out item list"
  349. 5140  PRINT " Q   Save your file and quit"
  350. 5150  VTAB 21: HTAB 1: PRINT  SPC( 37);: VTAB 22: HTAB 1: PRINT  SPC( 37);: VTAB 22: HTAB 12: PRINT "Press a key.";
  351. 5160  POKE  -16368,0: WAIT  -16384,128:K$ =  CHR$( PEEK( -16384) -128): RETURN 
  352. 7000  GOSUB 10000
  353. 7005  VTAB 6: HTAB 2: PRINT "What is here:"
  354. 7006  VTAB 18: HTAB 10: PRINT "You are at level "CL%".";
  355. 7010  VTAB 21: HTAB 2: PRINT "Arrows move highlight.";: VTAB 22: HTAB 2: PRINT "RETURN selects.";: VTAB 23: HTAB 2: PRINT "Selection:";
  356. 7020 TP = 1:BT = 8
  357. 7030 CS = 0
  358. 7040  IF BT >Y  THEN BT = Y
  359. 7050  GOSUB 7270
  360. 7060  FOR I = 0 TO BT -TP: VTAB I +8: HTAB 3
  361. 7070  PRINT " "AA$(PT%(I +TP))" "
  362. 7080  NEXT I
  363. 7090  VTAB 7: HTAB 3: PRINT "----------------": VTAB 16: HTAB 3: PRINT "----------------"
  364. 7100  IF TP >1  THEN  VTAB 7: HTAB 3: PRINT "------MORE------"
  365. 7110  IF BT <Y  THEN  VTAB 16: HTAB 3: PRINT "------MORE------"
  366. 7120  VTAB 23: HTAB 12: NORMAL : PRINT  SPC( 25);: VTAB 23: HTAB 12: INVERSE : PRINT " "AA$(PT%(CS +TP))" ";
  367. 7130  VTAB CS +8: HTAB 3: INVERSE : PRINT " "AA$(PT%(CS +TP))" "
  368. 7135  POKE  -16368,0: WAIT  -16384,128:K$ =  CHR$( PEEK( -16384) -128): POKE  -16368,0
  369. 7140  NORMAL : VTAB CS +8: HTAB 3: PRINT " "AA$(PT%(CS +TP))" "
  370. 7150  IF (K$ =  CHR$(11)  OR K$ =  CHR$(8))  AND CS = 0  AND TP >1  THEN TP = TP -8:BT = TP +7:CS = 7: GOTO 7050
  371. 7160  IF (K$ =  CHR$(11)  OR K$ =  CHR$(8))  THEN  IF CS >0  THEN CS = CS -1: GOTO 7120
  372. 7170  IF (K$ =  CHR$(10)  OR K$ =  CHR$(21))  AND CS = BT -TP  AND BT <Y  THEN TP = TP +8:BT = BT +8: GOTO 7030
  373. 7180  IF (K$ =  CHR$(10)  OR K$ =  CHR$(21))  THEN  IF CS <BT -TP  THEN CS = CS +1: GOTO 7120
  374. 7190  IF K$ =  CHR$(27)  THEN TP = 0:CS = 0: RETURN 
  375. 7200  IF K$ =  CHR$(13)  THEN  RETURN 
  376. 7210 P = 9:D = 3: GOSUB 62001: GOTO 7120
  377. 7260  REM <CTRL-0x0a>CLR BTM
  378. 7270  POKE 34,7: POKE 35,17: HOME : POKE 34,1: POKE 35,23: RETURN 
  379. 7990  REM <CTRL-0x0a>PRINT PATH OF ITEM
  380. 8000 TL% = 0
  381. 8005  POKE 34,7: POKE 35,19: HOME 
  382. 8010 JJ = TI%
  383. 8020  IF AA%(JJ) < >0  THEN TL% = TL% +1:JJ = AA%(JJ): GOTO 8020
  384. 8030 TL% = TL% +1
  385. 8040  IF TL% = 0  THEN  GOTO 8130
  386. 8050  FOR X = TL% TO 1  STEP  -1
  387. 8060 J = TI%
  388. 8070  FOR Y = X TO 1  STEP  -1
  389. 8080 J = AA%(J)
  390. 8090  NEXT 
  391. 8100  REM   
  392. 8110  PRINT " "AA$(J)
  393. 8120  NEXT 
  394. 8130  REM  
  395. 8140  IF J < >TI%  THEN  PRINT " "AA$(TI%)
  396. 8150  RETURN 
  397. 8990  REM <CTRL-0x0a>PRINT ITEMS
  398. 9000 A$ = "PRINT ITEMS": GOSUB 10000
  399. 9005  VTAB 21: HTAB 1: PRINT "Choose A)ll items or only items";: VTAB 22: HTAB 1: PRINT "that are H)ere.";: VTAB 23: HTAB 1: PRINT "(Press A, H, or ESC)";
  400. 9006  GOSUB 20000:CH$ = K$: ON K$ =  CHR$(27) GOTO 225
  401. 9007  IF K$ < >"A"  AND K$ < >"H"  THEN P = 240:D = 20: GOSUB 62001: GOTO 9006
  402. 9008  GOSUB 10000: VTAB 10: HTAB 4: IF CH$ = "A"  THEN  PRINT "Print All Items"
  403. 9009  IF CH$ < >"A"  THEN  PRINT "Print Items That Are Here"
  404. 9010  VTAB 21: HTAB 1: PRINT "Press RETURN to print to slot 1.";: VTAB 23: HTAB 1: PRINT "(or enter slot number of printer)";
  405. 9015  VTAB 22: HTAB 1:IN$ = "": GOSUB 61000:SL =  VAL(IN$): ON K$ = ES$ GOTO 9180: IF   NOT  LEN(IN$)  THEN SL = 1
  406. 9017  IF   NOT ( VAL(IN$))  AND  LEN(IN$)  THEN  VTAB 22: HTAB 1: PRINT  SPC( 24);:P = 240:D = 20: GOSUB 62001: GOTO 9015
  407. 9020  TEXT : HOME : VTAB 12: HTAB 4: PRINT "Printing to slot "SL"..."
  408. 9028 LN$ = "-------------------------------------------------------------------------------"
  409. 9030  PRINT  CHR$(4)"PR#"SL
  410. 9035 LC = 2:PG = 1: PRINT "WHERZ-IT-AT REPORT" SPC( 54 +(PG <10))"Page "PG: PRINT LN$
  411. 9040  PRINT "You are at ";:TI% = CI%:LE = 12: GOSUB 9400: PRINT ".": IF CH$ < >"A"  THEN  PRINT "What is here:"
  412. 9045  IF CH$ = "A"  THEN  PRINT "Here is a list of all items:"
  413. 9047 LC = LC +1
  414. 9050  FOR PP = 1 TO HI
  415. 9052  IF LC = 0  THEN  PRINT "WHERZ-IT-AT REPORT" SPC( 54 +(PG <10))"Page "PG: PRINT LN$:LC = LC +2
  416. 9053  IF AA%(PP) > = 0  THEN  IF (AA%(PP) = CI%  OR CH$ = "A")  THEN  PRINT "  "AA$(PP);: IF CH$ = "A"  THEN  PRINT " is at ";:TI% = AA%(PP):LE =  LEN(AA$(PP)): GOSUB 9400: PRINT ".";
  417. 9055  IF AA%(PP) = CI%  OR CH$ = "A"  THEN  PRINT :LC = LC +1: IF LC >58  THEN  PRINT  CHR$(12);:LC = 0:PG = PG +1
  418. 9060  NEXT PP
  419. 9065  IF LC  THEN  PRINT  CHR$(12);
  420. 9070  PRINT : PRINT : PRINT  CHR$(4)"PR#0": GOSUB 15
  421. 9080  PRINT  CHR$(21);: TEXT : HOME 
  422. 9180  RETURN 
  423. 9400 TL% = 0
  424. 9410 JJ = TI%
  425. 9420  IF AA%(JJ) < >0  THEN TL% = TL% +1:JJ = AA%(JJ): GOTO 9420
  426. 9430 TL% = TL% +1
  427. 9440  IF TL% = 0  THEN  GOTO 9530
  428. 9450  FOR X = TL% TO 1  STEP  -1
  429. 9460 J = TI%
  430. 9470  FOR Y = X TO 1  STEP  -1
  431. 9480 J = AA%(J)
  432. 9490  NEXT 
  433. 9500  REM   
  434. 9505  IF LE + LEN(AA$(J)) >70  THEN  PRINT : PRINT "    ";:LE = 0:LC = LC +1
  435. 9510  PRINT "/"AA$(J);:LE = LE + LEN(AA$(J)) +1
  436. 9520  NEXT 
  437. 9530  REM      
  438. 9535  IF LE + LEN(AA$(TI%)) >70  THEN  PRINT : PRINT "    ";:LE = 0:LC = LC +1
  439. 9540  IF J < >TI%  THEN  PRINT "/"AA$(TI%);
  440. 9550  RETURN 
  441. 9990  REM <CTRL-0x0a>CENTER OPTION TITLE
  442. 10000  VTAB 20: HTAB 2: PRINT "----------------------------------";
  443. 10005  VTAB 20: HTAB 19 -( LEN(A$)/2) -1: PRINT " "A$" ";
  444. 10010  POKE 32,1: POKE 33,38: POKE 34,5: POKE 35,19: HOME 
  445. 10020  FOR I = 21 TO 23: VTAB I: HTAB 1: PRINT  SPC( 37);: NEXT 
  446. 10025 IN$ = ""
  447. 10030  VTAB 6: HTAB 1: RETURN 
  448. 19990  REM <CTRL-0x0a>GET A KEY
  449. 20000  POKE  -16368,0: WAIT  -16384,128:K$ =  CHR$( PEEK( -16384) -128): POKE  -16368,0
  450. 20010  IF K$ > = "a"  AND K$ < = "z"  THEN K$ =  CHR$( ASC(K$) -32)
  451. 20020  RETURN 
  452. 49990  REM <CTRL-0x0a>EASY TITLE
  453. 50000  TEXT : HOME : COLOR= 10: VLIN 0,47 AT 0: VLIN 0,47 AT 39: HLIN 0,39 AT 0: HLIN 0,39 AT 46: COLOR= 13: HLIN 1,38 AT 4: HLIN 1,38 AT 8: HLIN 1,38 AT 38: POKE 34,1: POKE 35,23: POKE 32,1: POKE 33,38: VTAB 2: HTAB 1
  454. 50010  PRINT " WHERZ-IT-AT         (C)1988 SOFTDISK";: VTAB 4: HTAB 1
  455. 50030  RETURN 
  456. 58000 :
  457. 58010  PRINT  CHR$(4)"prefix"
  458. 58020  INPUT PF$
  459. 58025  IF  LEFT$(PF$,5) = "/RAM/"  THEN  PRINT "It doesn't make sense to run": PRINT "Wherz-it-at on a RAM volume.": GET A$:EX = 1: GOTO 58090
  460. 58030  PRINT  CHR$(4)"open"PF$",tdir"
  461. 58040  PRINT  CHR$(4)"read"PF$
  462. 58050  INPUT K$,K$,K$:CC = 0
  463. 58060  INPUT K$
  464. 58062  IF K$ = ""  THEN 58075
  465. 58063 T$ = ""
  466. 58065  IF  MID$ (K$,2,3) = "WZ."  AND  MID$ (K$,18,3) = "TXT"  THEN T$ =  MID$ (K$,5,12):CC = CC +1
  467. 58066  IF T$ = ""  THEN 58060
  468. 58067  HTAB 1 +(20 *(CC/2 =  INT(CC/2))): PRINT T$;: IF CC/2 =  INT(CC/2)  THEN  PRINT 
  469. 58070  IF CC <32  THEN 58060
  470. 58072 CC = 2: PRINT "More files. Press a key.": POKE 49168,0: WAIT 49152,128: POKE 34,2: HOME : TEXT : VTAB 3: GOTO 58060
  471. 58075  PRINT  CHR$(4)"close": IF CC = 0  THEN  PRINT "None. You must save some first.": GET A$:EX = 1: GOTO 58090
  472. 58090  RETURN 
  473. 59000  IF A$ > = "a"  THEN A$ =  CHR$( ASC(A$) -32)
  474. 59010  RETURN 
  475. 60000  CALL  PEEK(121) + PEEK(122) *256 +32,IN$: REM   GET  COS  LEN SIN l EXP DEL  DEL  INPUT  DIM  , USR COLOR= <CTRL-0x01> GR  ROT=  COLOR= <CTRL-0x02> VTAB  PLOT   RIGHT$ LEN  SHLOAD  SQR`
  476. 60010  RETURN 
  477. 61000  REM <CTRL-0x0a>input in$<CTRL-0x0a>
  478. 61009 V =  PEEK(37) +1:H =  PEEK(36) +1:IW = 36 -H: IF IW >23  THEN IW = 23
  479. 61010  REM  pass in$:return in$:pass h,v for htab,vtab: pass iw for input width
  480. 61020 BS$ =  CHR$(8):ES$ =  CHR$(27):CR$ =  CHR$(13): VTAB V: HTAB H
  481. 61030  POKE 49168,0: PRINT ">"IN$;
  482. 61040  PRINT " "BS$;
  483. 61050 :
  484. 61060  GET K$: PRINT " "BS$;
  485. 61070  IF K$ =  CHR$(24)  THEN  IF  LEN(IN$)  THEN  HTAB H: PRINT  SPC(  LEN(IN$) +1):IN$ = "": GOTO 61020
  486. 61080  IF K$ =  CHR$(127)  THEN K$ = BS$
  487. 61085  IF K$ > = "a"  THEN K$ =  CHR$( ASC(K$) -32)
  488. 61090  IF K$ = ES$  THEN IN$ = "": GOTO 61160
  489. 61100  IF K$ = BS$  THEN  IF  LEN(IN$) = 1  THEN IN$ = "": PRINT " "BS$BS$;: GOTO 61040
  490. 61110  IF K$ = BS$  THEN  IF  LEN(IN$)  THEN IN$ =  LEFT$(IN$, LEN(IN$) -1): PRINT " "BS$BS$;: GOTO 61040
  491. 61120  IF K$ = CR$  THEN  PRINT " ";: GOTO 61160
  492. 61130  IF K$ > = " "  THEN  IF  LEN(IN$) <IW  THEN IN$ = IN$ +K$: PRINT K$;: GOTO 61150
  493. 61140 P = 9:D = 3: GOSUB 62000
  494. 61150  GOTO 61040
  495. 61160  RETURN 
  496. 62000  REM <CTRL-0x0a>HUMMY<CTRL-0x0a>
  497. 62001  CALL  PEEK(121) + PEEK(122) *256 +32,P,D: REM   GET  COS g EXP R CHR$ ONERR P PLOT  TAN GET   GET  COS g EXP R CHR$ ONERR P PLOT  ATN GET  PLOT 0 TAB(  GR  MID$  MID$  = <CTRL-0x05>  OR  ATN GET <UNKNOWN TOKEN><CTRL-0x11> * = <CTRL-0x05> RESTORE  TAN GET  = <UNKNOWN TOKEN> RIGHT$<CTRL-0x01> =  MID$  IF  TAN GET  =  PEEK`
  498. 62010  RETURN 
  499. 63000 Q8 =  PEEK(184):Q9 =  PEEK(185): CALL Q8 +(Q9 -(Q8 >244)) *256 +39: RETURN : REM  ONERR # DEL <UNKNOWN TOKEN>  NOT <UNKNOWN TOKEN> ONERR <UNKNOWN TOKEN>  TO <UNKNOWN TOKEN> ONERR ( DEL * ONERR ) DEL +  NOT <UNKNOWN TOKEN> ONERR <UNKNOWN TOKEN>  TO <UNKNOWN TOKEN> VTAB <CTRL-0x01> * LOMEM:   GR  + LEFT$ RETURN ( HGR * STR$! = <UNKNOWN TOKEN> ONERR " AT <UNKNOWN TOKEN> =  FRE SPEED=  COLOR=  VTAB <CTRL-0x01> * LOMEM:   HGR ( + LEFT$ STR$! = <UNKNOWN TOKEN>`: